package com.base.mapper.voipmapper;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.base.po.sqlparam.CallbackinfoesExamplePage;
import com.base.po.voip.Callbackinfoes;
import com.base.po.voip.CallbackinfoesExample;
import com.base.utils.Page;

public interface CallbackinfoesMapper {
    BigDecimal sumOmoneyParentID(String id);// 计算OEM系统消耗

    BigDecimal sumOmoneyShopID(String id);// 计算代理商系统消耗

    int countByExample(CallbackinfoesExample example);

    int deleteByExample(CallbackinfoesExample example);

    int deleteByPrimaryKey(String id);

    int insert(Callbackinfoes record);

    int insertSelective(Callbackinfoes record);

    List<Callbackinfoes> selectByExample(CallbackinfoesExample example);

    List<Callbackinfoes> selectByExamplePage(CallbackinfoesExamplePage example);

    List<Callbackinfoes> selectByCallerAndParentID(@Param("caller") String caller, @Param("parentid") String parentid);

    List<Callbackinfoes> selectByAll(@Param("page") Page page, @Param("caller") String caller,
                                     @Param("calle164") String calle164, @Param("dateFrom") String dateFrom,
                                     @Param("dateTo") String dateTo);

    List<Callbackinfoes> selectByParentID(@Param("page") Page page, @Param("parentid") String parentid,
                                          @Param("caller") String caller, @Param("calle164") String calle164,
                                          @Param("dateFrom") String dateFrom, @Param("dateTo") String dateTo);

    List<Callbackinfoes> selectByShopID(@Param("page") Page page, @Param("shopid") String shopid,
                                        @Param("caller") String caller, @Param("calle164") String calle164,
                                        @Param("dateFrom") String dateFrom, @Param("dateTo") String dateTo);

    Callbackinfoes selectByPrimaryKey(String id);

    int updateByExampleSelective(@Param("record") Callbackinfoes record,
                                 @Param("example") CallbackinfoesExample example);

    int updateByExample(@Param("record") Callbackinfoes record, @Param("example") CallbackinfoesExample example);

    int updateByPrimaryKeySelective(Callbackinfoes record);

    int updateByPrimaryKey(Callbackinfoes record);

    int countByAll(@Param("caller") String caller, @Param("calle164") String calle164, @Param("dateFrom") String dateFrom,
                   @Param("dateTo") String dateTo);

    int countByParentID(@Param("parentid") String parentid, @Param("caller") String caller, @Param("calle164") String calle164,
                        @Param("dateFrom") String dateFrom, @Param("dateTo") String dateTo);

    int countByShopID(@Param("shopid") String shopid, @Param("caller") String caller, @Param("calle164") String calle164,
                      @Param("dateFrom") String dateFrom, @Param("dateTo") String dateTo);

    BigDecimal sumByParentID(@Param("parentid") String parentid, @Param("caller") String caller, @Param("calle164") String calle164,
                             @Param("dateFrom") String dateFrom, @Param("dateTo") String dateTo);

    /**
     * 今日活跃
     *
     * @param parentid 商家/代理商ID
     * @param today    今天
     * @return
     */
    int countDayByParentID(@Param("parentid") String parentid, @Param("begin") Date begin, @Param("end") Date end);

    int countDayByShopID(@Param("shopid") String shopid, @Param("begin") Date begin, @Param("end") Date end);

    // 年
    int countYearByParentID(@Param("parentid") String parentid, @Param("begin") Date begin, @Param("end") Date end);

    int countDzp(@Param("parentid") String parentid, @Param("mobile") String mobile, @Param("begintime") Date begintime, @Param("endtime") Date endtime);

    Map<String,Object> countMoneyByParentID(@Param("id") String id, @Param("datetime1") String datetime1, @Param("datetime2") String datetime2);

    List<Callbackinfoes> selectAllByParentId(@Param("id") String parentid, @Param("datetime1") String datetime1, @Param("datetime2") String datetime2,@Param("page") Page page);

    Map<String,Object> sumOmentyByMobile(@Param("mobile") String mobile, @Param("parentId") String pId);
}